<?php 
/**
 *  Por Federico Pisarello - SisDev Software (c) 2013 - Buenos Aires, Argentina.
 * 	fpisarello@sisdevsoft.com
 */

require("includes/funciones.inc.php");

session_start();
if(!isset($_SESSION['nombreUsuario']))
	exit();

function searchResumenCtaCte()
{
	require("includes/constants.php");
	
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	//Filtros de Cliente
	if(!empty($_REQUEST['cliDesde']) && $_REQUEST['cliDesde'] != $NULL_VALUE)
		$cliDesde = $_REQUEST['cliDesde'];
	else 
		$cliDesde = 0;
	
	if(!empty($_REQUEST['cliHasta']) && $_REQUEST['cliHasta'] != $NULL_VALUE)
		$cliHasta = $_REQUEST['cliHasta'];
	else
		$cliHasta = PHP_INT_MAX;

	//Filtros de Fecha
	if(!empty($_REQUEST['fechaDesde']))
		$fechaDesde = date("Y-m-d", strtotime(str_replace("/", "-", $_REQUEST['fechaDesde'])));
	else
		$fechaDesde = date("Y-m-d", mktime(0, 0, 0, 0, 0, 1970));
	
	if(!empty($_REQUEST['fechaHasta']))
		$fechaHasta = date("Y-m-d", strtotime(str_replace("/", "-", $_REQUEST['fechaHasta'])));
	else
		$fechaHasta = date("Y-m-d", mktime(0, 0, 0, 0, 0, 2038));
	
	$strSQL = "SELECT c.idCliente, c.razonSocial, f.fecha, tc.descripcion AS tipoComp, f.ltr, s.codSucursal, f.nro, f.total FROM facturas f
				INNER JOIN clientes c ON f.idCliente = c.idCliente
				INNER JOIN tipo_comprobantes tc ON f.idTipo = tc.idTipoComprobante
			 	INNER JOIN sucursales s ON f.idSucursal = s.idSucursal
				LEFT JOIN (SELECT idFactura, SUM(importe) saldo FROM recibos_facturas GROUP BY idFactura) sdo ON f.idFactura = sdo.idFactura
				WHERE f.estado <> '$stateErase' 
					AND c.idCliente BETWEEN '".$cliDesde."' AND '".$cliHasta."' 
					AND f.fecha BETWEEN '".$fechaDesde."' AND '".$fechaHasta."'
				UNION ALL
				SELECT c.idCliente, c.razonSocial, r.fecha, 'RECIBO' AS tipoComp, 'R' AS ltr, '' AS codSucursal, r.idRecibo, r.importe FROM recibos r
				INNER JOIN clientes c ON r.idCliente = c.idCliente
        		WHERE r.estado <> '$stateErase'
        			AND c.idCliente BETWEEN '".$cliDesde."' AND '".$cliHasta."' 
					AND r.fecha BETWEEN '".$fechaDesde."' AND '".$fechaHasta."'
				ORDER BY idCliente, fecha";
	
	$rsCtaCte = $DB->Execute($strSQL);
	
	if($rsCtaCte->EOF) {
		return json_encode(array());
	}
	else {
		$idCliente = 0;
		$arrCtaCte = array();
		while(!$rsCtaCte->EOF){
			if($idCliente != $rsCtaCte->fields('idCliente')) {
				if($idCliente != 0) {
					array_push($arrCtaCte, $objCliente);
				} 			
				$objCliente = "";
				$objCliente->idCliente = $rsCtaCte->fields('idCliente');
				$objCliente->razonSocial = $rsCtaCte->fields('razonSocial');
				$objCliente->comprobantes = array();
				
				//Calculo Saldo Inicio
				//Facturas y Recibos con y sin Imputar
				$strSQL = "SELECT IFNULL(SUM(total),0) AS saldoInicio FROM (
							SELECT f.total FROM facturas f
							WHERE 
								f.estado <> '$stateErase' 
								AND f.idCliente = '".$rsCtaCte->fields('idCliente')."' 
								AND f.fecha < '".$fechaDesde."'
							UNION ALL
						   SELECT -r.importe FROM recibos r
						   	WHERE
						   		r.estado <> '$stateErase'
        						AND r.idCliente = '".$rsCtaCte->fields('idCliente')."' 
								AND r.fecha < '".$fechaDesde."'
							) sdoInicio";
				
				$rsSaldoInicio = $DB->Execute($strSQL);
				$saldo = $rsSaldoInicio->fields('saldoInicio');

				//Guardo el Saldo Inicio
				$objCliente->saldoInicio = $saldo;
				 
				$idCliente = $rsCtaCte->fields('idCliente');
			}
			
			$objComprobante = "";
			$objComprobante->fecha = date("d/m/Y", strtotime($rsCtaCte->fields('fecha')));
			$objComprobante->tipoComp = $rsCtaCte->fields('tipoComp');
			if($rsCtaCte->fields('tipoComp') == "RECIBO") {
				$objComprobante->nro = substr("000000".$rsCtaCte->fields('nro'),-6);
				$objComprobante->debe = 0;
				$objComprobante->haber = $rsCtaCte->fields('total');
				$saldo -= $rsCtaCte->fields('total');
				
			}
			else {
				$objComprobante->nro = $rsCtaCte->fields('ltr').$rsCtaCte->fields('codSucursal')."-".substr("00000000".$rsCtaCte->fields('nro'),-8);
				$objComprobante->debe = $rsCtaCte->fields('total');
				$objComprobante->haber = 0;
				$saldo += $rsCtaCte->fields('total');
			}
			$objComprobante->saldo = $saldo;
			
			array_push($objCliente->comprobantes, $objComprobante);
			
			$rsCtaCte->MoveNext();
		}
		array_push($arrCtaCte, $objCliente);
	}
	
	return json_encode($arrCtaCte);
}

function searchCuentasCobrar()
{
	require("includes/constants.php");
	
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	//Filtros de Cliente
	if(!empty($_REQUEST['cliDesde']) && $_REQUEST['cliDesde'] != $NULL_VALUE)
		$cliDesde = $_REQUEST['cliDesde'];
	else
		$cliDesde = 0;
	
	if(!empty($_REQUEST['cliHasta']) && $_REQUEST['cliHasta'] != $NULL_VALUE)
		$cliHasta = $_REQUEST['cliHasta'];
	else
		$cliHasta = PHP_INT_MAX;
	
	//Filtros de Fecha
	if(!empty($_REQUEST['fechaDesde']))
		$fechaDesde = date("Y-m-d", strtotime(str_replace("/", "-", $_REQUEST['fechaDesde'])));
	else
		$fechaDesde = date("Y-m-d", mktime(0, 0, 0, 0, 0, 1970));
	
	if(!empty($_REQUEST['fechaHasta']))
		$fechaHasta = date("Y-m-d", strtotime(str_replace("/", "-", $_REQUEST['fechaHasta'])));
	else
		$fechaHasta = date("Y-m-d", mktime(0, 0, 0, 0, 0, 2038));
	
	$strSQL = "SELECT c.idCliente, c.razonSocial, c.telefono, ROUND(f.total - IFNULL(sdo.saldo, 0),2) AS saldo FROM clientes c
				INNER JOIN (
							SELECT idCliente, SUM(fa.total) AS total FROM facturas fa
							WHERE fa.estado <> '$stateErase' 
								AND fa.fecha BETWEEN '".$fechaDesde."' AND '".$fechaHasta."'
							GROUP BY idCliente
						   ) f ON f.idCliente = c.idCliente
				LEFT JOIN (
							SELECT idCliente, SUM(r.importe) saldo FROM recibos r 
							WHERE r.estado <> '$stateErase' 
								AND r.fecha BETWEEN '".$fechaDesde."' AND '".$fechaHasta."'
							GROUP BY r.idCliente
						  ) sdo ON f.idCliente = sdo.idCliente
				WHERE c.idCliente BETWEEN '".$cliDesde."' AND '".$cliHasta."'
				ORDER BY saldo DESC";
	
	$rsCtaCobrar = $DB->Execute($strSQL);
	
	if($rsCtaCobrar->EOF) 
		return json_encode(array());

	$arrCtaCobrar = array();
	while(!$rsCtaCobrar->EOF){

		//Calculo Saldo Inicio
		//Facturas y Recibos con y sin Imputar
		$strSQL = "SELECT IFNULL(SUM(total),0) AS saldoInicio FROM (
					SELECT f.total FROM facturas f
					WHERE
						f.estado <> '$stateErase'
						AND f.idCliente = '".$rsCtaCobrar->fields('idCliente')."'
						AND f.fecha < '".$fechaDesde."'
					UNION ALL
					SELECT -r.importe FROM recibos r
					WHERE
						r.estado <> '$stateErase'
						AND r.idCliente = '".$rsCtaCobrar->fields('idCliente')."'
							AND r.fecha < '".$fechaDesde."'
					) sdoInicio";
		
		$rsSaldoInicio = $DB->Execute($strSQL);
		$saldoInicio = $rsSaldoInicio->fields('saldoInicio');
		
		$objCliente = "";
		$objCliente->idCliente = $rsCtaCobrar->fields('idCliente');
		$objCliente->cliente = $rsCtaCobrar->fields('razonSocial');
		$objCliente->telefono = $rsCtaCobrar->fields('telefono');
		$objCliente->saldo = $rsCtaCobrar->fields('saldo') + $saldoInicio;
		
		array_push($arrCtaCobrar, $objCliente);
		
		$rsCtaCobrar->MoveNext();
	}
	
	return json_encode($arrCtaCobrar);	
}

function getClientes()
{
	require("includes/constants.php");

	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;

	$rsClientes = $DB->Execute("SELECT * FROM clientes WHERE estado <> '$stateErase' AND razonSocial LIKE '%".$_REQUEST['term']."%'");

	if($rsClientes->EOF)
		return json_encode(array());

	$i=0;
	while(!$rsClientes->EOF){
		$arrClientes->data[$i]['id'] = $rsClientes->fields('idCliente');
		$arrClientes->data[$i++]['value'] = $rsClientes->fields('razonSocial');
		$rsClientes->MoveNext();
	}

	return json_encode($arrClientes->data);
}

switch($_REQUEST['accion'])
{
	case "getClientes":
		echo getClientes();
		break;
	case "searchResumenCtaCte":
		echo searchResumenCtaCte();
		break;
	case "searchCuentasCobrar":
		echo searchCuentasCobrar();
		break;
}
?>
